A computer system can be generally divided into four components: the hardware, the operating system, the application programs and the users. The hardware (e.g., central processing unit (CPU), memory and input/output (I/O) devices) provides the basic computing resources. The application programs (e.g., database systems, games, business programs (database systems, etc.) define the ways in which these resources are used to solve computing problems. The operating system controls and coordinates the use of the hardware resources among the various application programs for the various users. In doing so, one goal of the operating system is to make the computer system convenient to use. A secondary goal is to use the hardware in an efficient manner.
The Unix operating system is one example of an operating system that is currently used by many enterprise computer systems. Unix was designed to be a time-sharing system, with a hierarchical file system, which supported multiple processes. A process is the execution of a program and consists of a pattern of bytes that the CPU interprets as machine instructions (text), data and stack. A stack defines a set of hardware registers or a reserved amount of main memory that is used for arithmetic calculations.
The Unix operating system consists of two separable parts: the “kernel” and the “system programs.” Systems programs consist of system libraries, compilers, interpreters, shells and other such programs that provide useful functions to the user. The kernel is the central controlling program that provides basic system facilities. The Unix kernel creates and manages processes, provides functions to access file-systems, and supplies communications facilities.
The Unix kernel is the only part of Unix that a user cannot replace. The kernel also provides the file system, CPU scheduling, memory management and other operating-system functions by responding to “system-calls.” Conceptually, the kernel is situated between the hardware and the users. System calls are used by the programmer to communicate with the kernel to extract computer resource information. The robustness of the Unix kernel allows system hardware and software to be dynamically configured to the operating system while applications programs are actively functional without having to shut-down the underlying computer system.
The kernel and system programs consist of a machine-code representation of programs developed in a higher-level language, such as C, C++, or assembly language. These programs make use of data structures—a structured grouping of program data, the order and composition of which are essential to understanding the data structures. This ordering and composition information is used during a compilation process—the translation of programs from high-level languages to machine code. During the compilation of optimized code, such as that used for the Unix kernel and system programs, the ability to easily extract this information from the resulting program objects or modules objects is lost.
As computers become networked and the addition of a variety of applications to the computer network become a mainstay of many computing environments, the relationship between the operating system and user applications have become a critical component in determining the right user interfaces to these applications to encourage the ease of use while ensuring system integrity and efficiency. In recent times, many computing devices have being adding various programs to diversify the applicability of the tradition computing notion to new devices. One of such programs is speech recognition programs that operate within the operating system's speech subsystem.
FIG. 1 is a block diagram illustration of an exemplary prior art computer system 100 that is configurable to perform speech recognition in a network connected applications based on speech recognition grammars stored in either a network connected server or in a network connected client device. As shown in FIG. 1, the computer communication network 100 includes a speech server having speech recognition grammar stored in it and networked connected applications 130 communicatively linked to each other through the computer network system 100. The computer network system 100 further includes central processing unit 110, memory 120, applications 130, operating system 150, storage device 160 and I/O device 170.
The computer system 100 can also include audio circuitry 180 suitable for receiving and processing analog audio signals into digitized speech data for use in a speech recognition system. The audio circuitry 180 also can be used to synthesize digital speech data into analog speech signals. Thus, the audio circuitry 180 can be used in the same fashion as a convention sound card. The speech server 140 has a grammar recognition grammar stored in it and applications 130.
An exemplary operation of the grammar speech recognition module 140 is described in “Ruback, Harvey M.; et al., U.S. patent application, entitled “Selective enablement of speech recognition grammars” Serial No.: 20030046074, filed on Jun. 15, 2001. To the extent not repeated herein, the contents of this patent application are hereby incorporated herein by reference.
The computer system 100 is further connected to an external storage device 160 and to an external drive device 170 through which computer programs can be loaded into computer system 100. The external storage device 160 and external drive 170 are connected to the computer system 100 through respective bus lines. The computer system 100 further includes main memory 130 and processor 110. The drive 170 can be a computer program product reader such a floppy disk drive, an optical scanner, a CD-ROM device, etc.
FIG. 1 additionally shows memory 130 including a kernel level memory. Memory 130 can be virtual memory which is mapped onto physical memory including RAM or a hard drive, for example. In the computer system described in FIG. 1, programmers add speech recognition to their applications by manually modifying the speech recognition source code in the speech recognition system 140. This often involves a fair amount of development work and can be problematic.
These manual speech recognition source code operations, which are essential for enabling speech recognition in the computer system 100, results in programmers spending more time interacting with the speech recognition subsystem 140 rather than concentrating on developing better speech user interfaces. Furthermore, in the computer system shown in FIG. 1, the speech subsystem 140 automatically “speechifies” an application by using methods such as remote object models or pre-programmed speech grammar stored in the speech subsystem 140. This results in user interfaces tending to be stiff and difficult to use and uncompelling to users because they provide limited customization of grammar phrases the user may use.
The prior art system in FIG. 1, generally performs object-specific operations and further limits the ability for the user to perform application specific speech recognition operations. The system shown in FIG. 1, further does not allow user to generate grammar profiles for applications via a software analysis of the application.